package readerRSS;

import MVC.IController;
import java.util.ArrayList;
import java.util.List;
import technical.HasBeenSeenStruct;
import technical.XmlFeedItemsMessageData;

/**
 *
 * @author Tania M
 * @version 1.0
 */
public class RssChannelController implements IController {

    private RssChannelModel _currentChannel = null; //lien lu en ce moment
    private HasBeenSeenStruct _hasBeenSeen = null;//état de lecture

    /**
     * COnstructeur
     */
    public RssChannelController() {
        _currentChannel = new RssChannelModel();
        _hasBeenSeen = new HasBeenSeenStruct();
    }

    /**
     * renvoie le titre (du modèle)
     *
     * @return the titre
     */
    public String getTitle() {
        return _currentChannel.getTitle();
    }

    /**
     * initialise un titre
     *
     * @param title the title to set
     */
    public void setTitle(String title) {
        _currentChannel.setTitle(title);
    }

    /**
     * renvoie le lien du canal (lien sans la partie "article")
     *
     * @return the lien
     */
    public String getLink() {
        return _currentChannel.getLink();
    }

    /**
     * initialise le lien du canal
     *
     * @param link the link to set
     */
    public void setLink(String link) {
        _currentChannel.setLink(link);
    }

    /**
     * renvoie la description du canal
     *
     * @return the description
     */
    public String getDesc() {
        return _currentChannel.getDesc();
    }

    /**
     * initialise la description du canal
     *
     * @param description the description to set
     */
    public void setDesc(String description) {
        _currentChannel.setDesc(description);
    }

    /**
     * renvoie les articles du canal
     *
     * @return the channel_items
     */
    public ArrayList<RssItemModel> getChannelItems() {
        return _currentChannel.getChannelItems();
    }

    /**
     * initialise les article du canal à partir d'une lsite d'articles technique
     *
     * @param channelItems the channelItems to set
     */
    public void setChannelItems(List<XmlFeedItemsMessageData> channelItems) {

        //parcours de la liste de feeds
        for (XmlFeedItemsMessageData element : channelItems) {
            //Le controleur RssItem va creer l'array list
            RssItemController controleur_items = new RssItemController();

            controleur_items.setTitle(element.getTitle());
            controleur_items.setDesc(element.getDescription());
            controleur_items.setGuid(element.getGuid());
            controleur_items.setLink(element.getLink());

            _currentChannel.setOneChannelItem(controleur_items.getModel());
        }
    }

    /**
     * renvoie la langue du flux
     *
     * @return the langue
     */
    public String getLang() {
        return _currentChannel.getLang();
    }

    /**
     * met à jour la langue du flux
     *
     * @param lang the lang to set
     */
    public void setLang(String lang) {
        _currentChannel.setLang(lang);
    }

    /**
     * renvoie la date de publication
     *
     * @return the date_publication
     */
    public String getPubDate() {
        return _currentChannel.getDatePub();
    }

    /**
     * met à jour la date de publication
     *
     * @param datePub the datePub to set
     */
    public void setPubDate(String datePub) {
        _currentChannel.setDatePub(datePub);
    }

    /**
     * A-t-il été lu?
     *
     * @return the _hasBeenSeen
     */
    public HasBeenSeenStruct getViewState() {
        return _hasBeenSeen;
    }

    /**
     * Met à jour l'état de lecture
     *
     * @param viewState the _hasBeenSeen to set
     */
    public void setViewState(HasBeenSeenStruct viewState) {
        this._hasBeenSeen = viewState;
    }

    /**
     * renvoie le channel courant (celui qui devrait être affiché dans le grand
     * panel en haut à droite) currentchannel permet de ne pas avoir à lire tous
     * les flux au démarrage et les charge au dernier moment
     *
     * @return the _currentChannel
     */
    public RssChannelModel getCurrentChannel() {
        return _currentChannel;
    }

    /**
     * indiquer quel canal est entrain d'être lu (l'adresse cliquée dans le
     * panel de gauche)
     *
     * @param currentChannel the _currentChannel to set
     */
    public void setCurrentChannel(RssChannelModel currentChannel) {
        this._currentChannel = currentChannel;
    }
}
